首页 > 编程笔记

Python bar()函数:绘制柱状图

柱状图主要用于展现 x 轴上不同类别数据的分布特征,其可分为单柱状图和多柱状图。

在 Python 中,可以通过 matplotlib.pyplot 模块中的 bar() 函数绘制柱状图,其语法格式如下:
bar(x,height,width,color,edgecolor,label)

1) 绘制单柱状图,示例代码如下:
import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']='SimHei'
#显示负号
plt.rcParams['axes.unicode_minus']=False
#x轴的刻度线向内显示
plt.rcParams['xtick.direction']='in'
#y轴的刻度线向外显示
plt.rcParams['ytick.direction']='out'
#创建画布
plt.figure(figsize=(10,8))
#柱状图标题
plt.title('销售量分析表')
#数据
x=[0,1,2,3,4,5,6,7]
y=[25140,68541,36584,35864,57841,78520,46333,35844]
#绘制柱状图
plt.bar(x,y,color='green',label='销售量')
#创建隐藏y轴的网格线
plt.grid(axis='y')
#设置x轴标题
plt.xlabel('年份')
#设置y轴标题
plt.ylabel('销售量/本')
#创建x轴刻度
plt.xticks(range(0,8,1),['2015','2016','2017','2018','2019','2020','2021','2022'])
#创建y轴刻度
plt.yticks(range(10000,100000,10000))
#创建文本标签
for a,b in zip(x,y):
plt.text(a,b+1,'%.1f'%b,ha='center',va='bottom',fontsize=9)
#创建图例
plt.legend(labels=['销售量'],loc=2)
上面代码的运行结果如下图所示。


图 1 单柱状图

2) 多柱状图,示例代码如下:
import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']='SimHei'
#显示负号
plt.rcParams['axes.unicode_minus']=False
#x轴的刻度线向内显示
plt.rcParams['xtick.direction']='in'
#y轴的刻度线向外显示
plt.rcParams['ytick.direction']='out'
#创建画布
plt.figure(figsize=(10,8))
#柱状图标题
plt.title('销售量分析表')
#数据
x1=[0,1,2,3,4,5,6,7]
x2=[0.2,1.2,2.2,3.2,4.2,5.2,6.2,7.2]
x3=[0.4,1.4,2.4,3.4,4.4,5.4,6.4,7.4]
x4=[0.6,1.6,2.6,3.6,4.6,5.6,6.6,7.6]
y1=[25140,68541,36584,35864,57841,78520,46333,35844]
y2=[35221,45214,45888,100254,52365,84512,75877,75845]
y3=[75222,36525,52364,62541,78555,35214,56241,62541]
y4=[35985,42555,75255,42515,92415,12545,66541,44525]
#绘制柱状图
plt.bar(x1,y1,width=0.2,color='green',label='C/C++')
plt.bar(x2,y2,width=0.2,color='red',label='Java')
plt.bar(x3,y3,width=0.2,color='yellow',label='Python')
plt.bar(x4,y4,width=0.2,color='pink',label='Go')
#创建隐藏y轴的网格线
plt.grid(axis='y')
#设置x轴标题
plt.xlabel('年份')
#设置y轴标题
plt.ylabel('销售量/本')
#创建x轴刻度
plt.xticks(range(0,8,1),['2015','2016','2017','2018','2019','2020','2021','2022'])
#创建y轴刻度
plt.yticks(range(10000,100000,10000))
#创建文本标签
for a,b in zip(x1,y1):
plt.text(a,b+1,'%.1f'%b,ha='center',va='bottom',fontsize=9)
#创建图例
plt.legend(labels=['C/C++','Java','Python','Go'],loc=2)
运行结果如下图所示:


图 2 多柱状图

推荐阅读

副业交流群 关注微信公众号,加入副业交流群,学习变现经验,交流各种打法。